package day13.practice;

import day13.part2.Person;
import day13.part2.Student;
import day13.part2.Teacher;

/**
 * @Author juzipi
 * @Date 2021/6/28 18:46
 * @Info
 */
public class Demo1 {

    public static void main(String[] args) {
        //练习转型
        //问题一：编译时通过，运行时不通过
        //new 子类转子类
//        Person person = new Teacher("湛山");
//        Student person1 = (Student) person;

        //问题二：编译通过，运行也通过
        //可以 new子类转父类
        Object object = new Teacher("Nihao1");
        Person teacher1 = (Person) object;

        //new 父类转子类不行，因为只加载了父类，并没有子类的特有属性或方法
//        Person person = new Person("1");
//        Student person1 = (Student) person;

        //问题三：编译不通过
        //它们之间没有关系
//        Student student = new Teacher("1");

        //注意：
        //1. 子类重写了父类的方法，意味着子类定义的方法彻底覆盖了父类的同名方法，不可能把父类的方法转移到子类中
        // -- 编译看左，运行看右
        //2. 对于实例变量则不存在这样的现象，即使子类里定义了与父类完全相同的实例变量，这个实例变量依然不可能覆盖父类中定义的实例变量
        // -- 编译看左边，运行也看左

    }

}
